﻿/**********************************************************************
 * @file   FITKAbsGeoModelExportTopos.h
 * @brief  导出几何部分形状
 * @author BaGuijun (baguijun@163.com)
 * @date   2025-08-26
 *********************************************************************/
#ifndef _FITKAbsGeoModelExportTopos_
#define _FITKAbsGeoModelExportTopos_
 
#include "FITKInterfaceGeometryAPI.h"
#include "FITKAbsGeoCommand.h"
#include <QString>

namespace Interface
{
    /**
     * @brief  导出几何部分形状
     * @author BaGuijun (baguijun@163.com)
     * @date   2025-08-26
     */
    class FITKInterfaceGeometryAPI FITKAbsGeoModelExportTopos :public  FITKAbsGeoCommand
    {
        FITKCLASS(Interface, FITKAbsGeoModelExportTopos);
    public:
        /**
         * @brief    构造函数
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-08-26
         */
        explicit FITKAbsGeoModelExportTopos();
        /**
         * @brief    析构函数
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-08-26
         */
        virtual ~FITKAbsGeoModelExportTopos();
        /**
         * @brief    设置文件名称
         * @param[i] fileName                   文件名称
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-08-26
         */
        void setFileName(const QString& fileName);
        /**
         * @brief    获取文件名称
         * @return   QString                    文件名称
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-08-26
         */
        QString getFileName() const;

        /**
         * @brief       设置被导出的虚拓扑数据列表。
         * @param[in]   edgeTopos：虚拓扑列表[引用]
         * @author      ChengHaotian (yeguangbaozi@foxmail.com)
         * @date        2025-09-23
         */
        void setExportTopos(QList<VirtualShape> edgeTopos);

        /**
         * @brief       获取被导出的虚拓扑数据列表。
         * @return      虚拓扑列表
         * @author      ChengHaotian (yeguangbaozi@foxmail.com)
         * @date        2025-09-23
         */
        const QList<VirtualShape> & getExportTopos();

        /**
         * @brief    添加需要导出的Topoid
         * @param[i] topoId                     拓扑id
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-08-26
         */
        void appendExportTopo(const VirtualShape & topo);

        /**
         * @brief       清除导出拓扑信息列表。
         * @author      ChengHaotian (yeguangbaozi@foxmail.com)
         * @date        2025-09-23
         */
        void clearExportTopos();

        /**
         * @brief    获取几何命令类型
         * @return   FITKGeoEnum::FITKGeometryComType       几何命令类型
         * @author   BaGuijun (baguijun@163.com)
         * @date     2025-08-26
         */
        FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override;

    protected:
        /**
         * @brief  导出文件名称
         * @author BaGuijun (baguijun@163.com)
         * @date   2025-08-26
         */
        QString _exportFileName = "";

        /**
         * @brief       导出拓扑列表。
         * @author      ChengHaotian (yeguangbaozi@foxmail.com)
         * @date        2025-09-23
         */
        QList<VirtualShape> _exportTopos = {};
    };
    
}


#endif
